package com.ys.control;

import com.ys.bean.UserbBean;

import com.ys.service.IUserbService;
import com.ys.service.impl.UserbService;
import com.ys.utils.MyUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;
import java.util.List;


@Controller
public class UserbLoginControl {
    @Resource
    private IUserbService userbService;

    /*
  映射关系：要求实体类的属性名和前台页面的表单控件的name属性值一一对应
  课堂作业：
      如果使用 @RequestParam 对方法参数进行绑定，是否可行？
   */
    @RequestMapping("/login1")
    public ModelAndView doLogin1(UserbBean userbB) {
        System.out.println("basepath:" + System.getProperty("server.basePath"));
        // 返回的视图对象
        ModelAndView mav = new ModelAndView();
        // 设置modelandview要显示的页面名:默认进入登录成功页面
        mav.setViewName("../../userbManager/userblogined");
        if (userbB !=null){
            System.out.println("后台登录处理：" + userbB.getUsName() + ":" + userbB.getUsPassword());
        }else {
            System.out.println("后台登陆：null");
        }
        // 调用service的接口方法，进行登录的业务逻辑处理
        List<UserbBean> lstUserbs = userbService.doLogin(userbB);
        //登陆判定
        if (lstUserbs!=null && lstUserbs.size()>0){


            // 登录成功，缓存当前登录成功的数据
            mav.addObject("userbUsName", lstUserbs.get(0).getUsName());
        }else {
            // 登录不成功
            System.out.println("登录失败");
            // 返回登录页面
            mav.setViewName("../../indexF");
        }
        // 返回ModelAndView对象
        return mav;
    }

    /**
     * 保存和修改用于信息
     *
     * @param userbBean 用户参数实体类

     * @return 结果视图
     */
    //@RequestParam("file_userimg")  // 验证是不是必须的？
    @RequestMapping("/saveOrUpdateUserb")
    public String saveOrUpdateUserb(UserbBean userbBean) {


        // 调用Service层进行用户信息数据保存和修改操作
        int i = userbService.saveOrUpdateUserb(userbBean);
        // 根据操作结果进行视图转发处理
        return "userbAddDetail";
    }

    /**
     * 添加了 @ResponseBody 表名该方法响应的是一个ajax类型的请求，
     * retrun返回的就是对ajax请求的响应内容，而不再是视图的路径
     */


    /**
     * ajax进行数据查询处理
     *
     * @param userbBean 查询参数信息
     * @return 查询结果集
     */
    @ResponseBody
    @RequestMapping("/doAjaxUserbQueryByPramas")
    public List<UserbBean> doAjaxQueryByPramas(UserbBean userbBean) {

        // 调用service层经进行数据库查询操作
        List<UserbBean> lstUserbs = userbService.selectUserbByParams(userbBean);
        // 在springmvc中直接放回数据结构，springmvc会自动把数据结果集转换为 json数据串发给客户端
        // 如果不是springmvc框架，则需要使用手动或者第三方工具将结果集转换为json字符串发回给客户端
        return lstUserbs;

    }

    /**
     * 使用ajax进行删除操作
     *
     * @param
     * @return
     */
    @ResponseBody
    @RequestMapping("/doAjaxUserbDeleteByID")
    public int doAjaxQueryByPramas(Integer usId) {
//默认返回值
        int i=0;
//调用service层进行删除操作
        i=userbService.deleteUserbByID(usId);
        return i;
    }



}
